package edu.pe.cayetano.util;

import edu.pe.cayetano.framework.Configuration;

public class UtilitarioSQLQuery {

	private static String 			connectionType	= Configuration.getConnectionDB();
	private static String 			schema			= Configuration.getSchemaDB();
	
	public static StringBuffer devuelveQueryListadoHC(){
		StringBuffer 	query 			= new StringBuffer();
		query.append(" SELECT NROHC,S.NOMBRE AS SEDE,NOMBRE_COMPLETO AS PACIENTE,DNI,FECHA_CREACION   "); 
		query.append(" FROM "+schema+"HISTORIA_CLINICA A");
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD ESP ON ESP.ESPECIALIDAD_ID=A.ESPECIALIDAD_ID");
		query.append(" INNER JOIN "+schema+"SEDE S ON S.SEDE_ID=ESP.SEDE_ID");
		query.append(" INNER JOIN "+schema+"V_PACIENTE P ON P.PACIENTE_ID=A.PACIENTE_ID");
		return query;
	}
	
	public static StringBuffer devuelveQueryListadoArchivo(String codUsuario){
		StringBuffer 	query 			= new StringBuffer();
		query.append(" SELECT ");
		if(connectionType.equalsIgnoreCase("DB2")){
			query.append(" (CAST(D.ESTADO_ID AS CHAR(1))||'-'||A.NROHC)AS CONCATENADO_NRO,");
			query.append(" (SELECT CAST(COD_PERFIL AS CHAR) FROM "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+")||TIENE_ECG||TIENE_FEX||TIENE_FIN||TIENE_ODO||TIENE_DPS||TIENE_DDF||CAST(D.ESTADO_ID AS CHAR(1))||'-'||FILEHC AS CONCATENADO_FILE,");
		}else{
			query.append(" CONCAT(D.ESTADO_ID,'-',A.NROHC)AS CONCATENADO_NRO,");
			query.append(" CONCAT((SELECT CAST(COD_PERFIL AS CHAR) FROM "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+"),TIENE_ECG,TIENE_FEX,TIENE_FIN,TIENE_ODO,TIENE_DPS,TIENE_DDF,D.ESTADO_ID,'-',FILEHC) AS CONCATENADO_FILE,");
		}
		query.append(" FILEHC,A.NROHC AS NROHC,A.FECHA_CREACION AS FECHA_CREACION ,"); 
		query.append(" FECHA_ALTA,D.NOMBRE AS ESTADO,NOMBRE_COMPLETO AS PACIENTE,");
		query.append(" S.NOMBRE AS SEDE");
		query.append(" FROM "+schema+"HISTORIA_CLINICA_DETALLE A INNER JOIN "+schema+"HISTORIA_CLINICA B");
		query.append(" ON B.NROHC=A.NROHC");
		query.append(" INNER JOIN "+schema+"V_PACIENTE C");
		query.append(" ON C.PACIENTE_ID=B.PACIENTE_ID");
		query.append(" INNER JOIN "+schema+"ESTADO D ON D.ESTADO_ID=A.ESTADO_ID");
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD SP ON SP.ESPECIALIDAD_ID=A.ESPECIALIDAD_ID");
		query.append(" INNER JOIN "+schema+"SEDE S ON S.SEDE_ID=SP.SEDE_ID");
		query.append(" WHERE A.NROHC=?");
		System.out.println("[UtilitarioSQLQuery]-[devuelveQueryListadoArchivo]:"+query.toString());
		return query;
	}

	/**
	 * Metodo que devuelve el query para las ordenes de servicio segun el motor de base de datos que se este utilizando
	 * */
	public static StringBuffer devuelveQueryListadoOrdenServicio(String codUsuario){
		StringBuffer 	query 		= new StringBuffer();
		if(connectionType.equalsIgnoreCase("DB2")){
			query = devuelveQueryListadoBaseOSDB2(codUsuario);
		}else{
			query = devuelveQueryListadoBaseOSMySQL(codUsuario);
		}
		return query; 	
	}

	public static StringBuffer devuelveQueryListadoBaseFiltros(String campo,String criterio,String codUsuario){
		StringBuffer 	query 		= new StringBuffer();
		if(connectionType.equalsIgnoreCase("DB2")){
			query = devuelveQueryListadoBaseFiltrosOSDB2(campo,criterio,codUsuario);
		}else{
			query = devuelveQueryListadoBaseFiltrosOSMySQL(campo,criterio,codUsuario);
		}
		return query; 	
	}
	
	/**
	 * Metodo que devuelve el query para el listado de ordened de ordenes de servicio para motor de base de datos : DB2  
	 * */
	public static StringBuffer devuelveQueryListadoBaseOSDB2(String codUsuario){
		StringBuffer 	query 		= new StringBuffer();
		query.append(" (SELECT  (SELECT CAST(COD_PERFIL AS CHAR) FROM  "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+")||CAST(M.ESTADO_ID AS CHAR(2))||A.NROORDENSERVICIO AS CONCATENADO,");
		query.append(" A.NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD, C.NOMBRE AS SERVICIO,"); 
		query.append(" D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO FROM  "+schema+"ORDEN_SERVICIO A");
		query.append(" INNER JOIN "+schema+"DETALLE_ORDEN_SERVICIO DOS ON DOS.NROORDENSERVICIO=A.NROORDENSERVICIO");
		query.append(" INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=DOS.SERVICIO_ID INNER JOIN "+schema+" SEDE S ON S.SEDE_ID=A.SEDE_ID");  
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID INNER JOIN "+schema+"V_PACIENTE D"); 
		query.append(" ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO"); 
		query.append(" INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID WHERE FECHA='"+UtilitarioTime.devuelveFechaActual()+"')");
		query.append(" union");
		query.append(" (SELECT  (SELECT CAST(COD_PERFIL AS CHAR) FROM  "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+")||CAST(M.ESTADO_ID AS CHAR(2))||A.NROORDENSERVICIO AS CONCATENADO,");
		query.append(" A.NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD,"); 
		query.append(" C.NOMBRE AS SERVICIO,  D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO"); 
		query.append(" FROM  "+schema+"ORDEN_SERVICIO A  ");
		query.append(" INNER JOIN "+schema+"DETALLE_ORDEN_SERVICIO DOS ON DOS.NROORDENSERVICIO=A.NROORDENSERVICIO");
		query.append(" INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=DOS.SERVICIO_ID INNER JOIN "+schema+"SEDE S"); 
		query.append(" ON S.SEDE_ID=A.SEDE_ID  INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID"); 
		query.append(" INNER JOIN "+schema+"V_PACIENTE D ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P"); 
		query.append(" ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID"); 
		query.append(" WHERE FECHA<'"+UtilitarioTime.devuelveFechaActual()+"' AND A.ESTADO_ID not in(4))");
		query.append(" ORDER BY FECHA DESC");
		return query;
	}
	
	public static StringBuffer devuelveQueryListadoBaseOSMySQL(String codUsuario){
		StringBuffer 	query 		= new StringBuffer();
		query.append(" (SELECT  CONCAT((SELECT CAST(COD_PERFIL AS CHAR) FROM USUARIO WHERE COD_USUARIO="+codUsuario+"),M.ESTADO_ID,NROORDENSERVICIO) AS CONCATENADO,");	
		query.append(" NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD, C.NOMBRE AS SERVICIO,"); 
		query.append(" INNER JOIN "+schema+"DETALLE_ORDEN_SERVICIO DOS ON DOS.NROORDENSERVICIO=A.NROORDENSERVICIO");
		query.append(" D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO FROM  "+schema+"ORDEN_SERVICIO A");  
		query.append(" INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=A.SERVICIO_ID INNER JOIN "+schema+" SEDE     S ON S.SEDE_ID=A.SEDE_ID");  
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID INNER JOIN "+schema+"V_PACIENTE D"); 
		query.append(" ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO"); 
		query.append(" INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID WHERE FECHA='"+UtilitarioTime.devuelveFechaActual()+"')");
		query.append(" union");
		query.append(" (SELECT  CONCAT((SELECT CAST(COD_PERFIL AS CHAR) FROM "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+"),M.ESTADO_ID,NROORDENSERVICIO) AS CONCATENADO,");
		query.append(" NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD,"); 
		query.append(" C.NOMBRE AS SERVICIO,  D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO"); 
		query.append(" FROM  "+schema+"ORDEN_SERVICIO A  INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=A.SERVICIO_ID INNER JOIN "+schema+"SEDE S"); 
		query.append(" ON S.SEDE_ID=A.SEDE_ID  INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID"); 
		query.append(" INNER JOIN "+schema+"V_PACIENTE D ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P"); 
		query.append(" ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID"); 
		query.append(" WHERE FECHA<'"+UtilitarioTime.devuelveFechaActual()+"' AND A.ESTADO_ID not in(4))");
		query.append(" ORDER BY FECHA DESC");
		return query;
	}
	
	/**
	 * Metodo que devuelve el query para el listado de ordenes que utilicen filtros de busqueda para motor de base de datos : DB2  
	 * */
	public static StringBuffer devuelveQueryListadoBaseFiltrosOSDB2(String campo,String criterio,String codUsuario){
		StringBuffer 	query 		= new StringBuffer();
		query.append(" (SELECT  (SELECT CAST(COD_PERFIL AS CHAR) FROM USUARIO WHERE COD_USUARIO="+codUsuario+")||CAST(M.ESTADO_ID AS CHAR(2))||A.NROORDENSERVICIO AS CONCATENADO,");	
		query.append(" A.NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD, C.NOMBRE AS SERVICIO,"); 
		query.append(" D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO FROM  "+schema+"ORDEN_SERVICIO A");
		query.append(" INNER JOIN "+schema+"DETALLE_ORDEN_SERVICIO DOS ON DOS.NROORDENSERVICIO=A.NROORDENSERVICIO");
		query.append(" INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=DOS.SERVICIO_ID INNER JOIN "+schema+"SEDE S ON S.SEDE_ID=A.SEDE_ID");  
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID INNER JOIN "+schema+"V_PACIENTE D"); 
		query.append(" ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO"); 
		query.append(" INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID WHERE FECHA='"+UtilitarioTime.devuelveFechaActual()+"'  AND UPPER("+campo+") LIKE '%"+criterio.toUpperCase()+"%')");
		query.append(" union");
		query.append(" (SELECT  (SELECT CAST(COD_PERFIL AS CHAR) FROM "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+")||CAST(M.ESTADO_ID AS CHAR(2))||A.NROORDENSERVICIO AS CONCATENADO,");	
		query.append(" A.NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD,"); 
		query.append(" C.NOMBRE AS SERVICIO,  D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO"); 
		query.append(" FROM  "+schema+"ORDEN_SERVICIO A  ");
		query.append(" INNER JOIN "+schema+"DETALLE_ORDEN_SERVICIO DOS ON DOS.NROORDENSERVICIO=A.NROORDENSERVICIO");
		query.append(" INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=DOS.SERVICIO_ID INNER JOIN "+schema+"SEDE S"); 
		query.append(" ON S.SEDE_ID=A.SEDE_ID  INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID"); 
		query.append(" INNER JOIN "+schema+"V_PACIENTE D ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P"); 
		query.append(" ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID"); 
		query.append(" WHERE FECHA<'"+UtilitarioTime.devuelveFechaActual()+"'  AND UPPER("+campo+") LIKE '%"+criterio.toUpperCase()+"%' AND A.ESTADO_ID not in(4))");
		query.append(" ORDER BY FECHA DESC");
		return query;
	}
	
	public static StringBuffer devuelveQueryListadoBaseFiltrosOSMySQL(String campo,String criterio,String codUsuario){
		StringBuffer 	query 		= new StringBuffer();
		query.append(" (SELECT  CONCAT((SELECT CAST(COD_PERFIL AS CHAR) FROM USUARIO WHERE COD_USUARIO="+codUsuario+"),M.ESTADO_ID,NROORDENSERVICIO) AS CONCATENADO,");	
		query.append(" A.NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD, C.NOMBRE AS SERVICIO,"); 
		query.append(" D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO FROM  "+schema+"ORDEN_SERVICIO A");  
		query.append(" INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=A.SERVICIO_ID INNER JOIN "+schema+"SEDE S ON S.SEDE_ID=A.SEDE_ID");  
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID INNER JOIN "+schema+"V_PACIENTE D"); 
		query.append(" ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN"+schema+" V_ALUMNO P ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO"); 
		query.append(" INNER JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID WHERE FECHA='"+UtilitarioTime.devuelveFechaActual()+"'  AND UPPER("+campo+") LIKE '%"+criterio.toUpperCase()+"%')");
		query.append(" union");
		query.append(" (SELECT  CONCAT((SELECT CAST(COD_PERFIL AS CHAR) FROM "+schema+"USUARIO WHERE COD_USUARIO="+codUsuario+"),M.ESTADO_ID,NROORDENSERVICIO) AS CONCATENADO,");	
		query.append(" NROORDENSERVICIO,FECHA,S.NOMBRE AS SEDE,E.NOMBRE AS ESPECIALIDAD,"); 
		query.append(" C.NOMBRE AS SERVICIO,  D.NOMBRE_COMPLETO AS PACIENTE,P.NOMBRE_COMPLETO AS OPERADOR, M.NOMBRE AS ESTADO"); 
		query.append(" FROM  "+schema+"ORDEN_SERVICIO A  INNER JOIN "+schema+"SERVICIO C ON C.SERVICIO_ID=A.SERVICIO_ID INNER JOIN "+schema+"SEDE S"); 
		query.append(" ON S.SEDE_ID=A.SEDE_ID  INNER JOIN "+schema+"ESPECIALIDAD  E ON E.ESPECIALIDAD_ID=C.ESPECIALIDAD_ID"); 
		query.append(" INNER JOIN "+schema+"V_PACIENTE D ON A.PACIENTE_ID=D.PACIENTE_ID  INNER JOIN "+schema+"V_ALUMNO P"); 
		query.append(" ON P.CODIGO_ALUMNO=A.CODIGO_ALUMNO INNER "+schema+"JOIN "+schema+"ESTADO M ON M.ESTADO_ID=A.ESTADO_ID"); 
		query.append(" WHERE FECHA<'"+UtilitarioTime.devuelveFechaActual()+"'  AND UPPER("+campo+") LIKE '%"+criterio.toUpperCase()+"%' AND A.ESTADO_ID not in(4))");
		query.append(" ORDER BY FECHA DESC");
		return query;
	}
	
	/**
	 * Metodo que devuelve el query para obtener el listado de citas
	 * */
	public static StringBuffer devuelveListadoCitas(){
		StringBuffer 	query 		= new StringBuffer();
		query.append(" SELECT CT.CITA_ID AS CITA,SE.NOMBRE AS SEDE,SP.NOMBRE AS ESPECIALIDAD,SD.NOMBRE AS SILLON,");
		query.append(" FECHA_SOLICITADA,HA.HORA,ES.NOMBRE AS ESTADO,PAC.NOMBRE_COMPLETO AS PACIENTE,PT.PLANTRA_CODIGO AS PLANTRA_CODIGO"); 
		query.append(" FROM "+schema+"CITA CT INNER JOIN "+schema+"ESTADO ES ON CT.ESTADO_ID=ES.ESTADO_ID"); 
		query.append(" INNER JOIN "+schema+"HORARIO_ATENCION HA ON HA.COD_HORARIO=CT.COD_HORARIO");
		query.append(" INNER JOIN "+schema+"SILLON_DENTAL SD ON SD.SILLON_ID=CT.SILLON_ID");
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD SP ON SP.ESPECIALIDAD_ID=SD.ESPECIALIDAD_ID");
		query.append(" INNER JOIN "+schema+"SEDE SE ON SE.SEDE_ID=SP.SEDE_ID");
		query.append(" INNER JOIN "+schema+"DETALLE_PLAN_TRATAMIENTO DPT ON DPT.CODIGO_DETPLANTRAT=CT.CODIGO_DETPLANTRAT");
		query.append(" INNER JOIN "+schema+"PLAN_TRATAMIENTO PT ON PT.PLANTRA_CODIGO=DPT.PLANTRA_CODIGO");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA_DETALLE HCD ON HCD.FILEHC=PT.FILEHC");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA HC ON HC.NROHC=HCD.NROHC");
		query.append(" INNER JOIN "+schema+"V_PACIENTE PAC ON PAC.PACIENTE_ID=HC.PACIENTE_ID");
		return query;
	}
	
	public static StringBuffer devuelveListadoPresupuestos(){	
		StringBuffer 	query 		= new StringBuffer();
		query.append(" SELECT PT.PLANTRA_CODIGO AS PLANTRA_CODIGO,PT.FILEHC AS FILEHC,");
		query.append(" NOMBRE_COMPLETO AS PACIENTE,SD.NOMBRE AS SEDE,ES.NOMBRE AS ESPECIALIDAD,");
		query.append(" PT.FECHA_REGISTRO AS FECHA_REGISTRO,");
		if(connectionType.equalsIgnoreCase("DB2"))
			query.append(" PT.FECHA_REGISTRO AS FECHA_VIGENCIA");
		else
			query.append(" DATE_FORMAT(ADDDATE(PT.FECHA_REGISTRO, INTERVAL 90 DAY),'%Y-%m-%d') AS FECHA_VIGENCIA");
		query.append(" ,SUM(COSTO*CANTIDAD) AS TOTAL");
		query.append(" FROM "+schema+"DETALLE_PLAN_TRATAMIENTO DPT");
		query.append(" INNER JOIN "+schema+"SERVICIO SE ON SE.SERVICIO_ID=DPT.SERVICIO_ID");
		query.append(" INNER JOIN "+schema+"PLAN_TRATAMIENTO PT ON PT.PLANTRA_CODIGO=DPT.PLANTRA_CODIGO");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA_DETALLE HCD ON HCD.FILEHC=PT.FILEHC ");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA HC ON HC.NROHC=HCD.NROHC ");
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD ES ON PT.ESPECIALIDAD_ORIGEN=ES.ESPECIALIDAD_ID"); 
		query.append(" INNER JOIN "+schema+"SEDE SD ON ES.SEDE_ID=SD.SEDE_ID ");
		query.append(" INNER JOIN "+schema+"V_PACIENTE PAC ON PAC.PACIENTE_ID=HC.PACIENTE_ID");
		query.append(" GROUP BY PT.PLANTRA_CODIGO,PT.FILEHC,PT.FECHA_REGISTRO,NOMBRE_COMPLETO,SD.NOMBRE,ES.NOMBRE ");
		return query;
	}
	public static StringBuffer devuelveListadoPresupuestosCabecera(){	
		StringBuffer 	query 		= new StringBuffer();
		query.append(" SELECT PT.PLANTRA_CODIGO AS PLANTRA_CODIGO,PT.FILEHC AS FILEHC,");
		query.append(" NOMBRE_COMPLETO AS PACIENTE,SD.NOMBRE AS SEDE,ES.NOMBRE AS ESPECIALIDAD,");
		query.append(" PT.FECHA_REGISTRO AS FECHA_REGISTRO,");
		if(connectionType.equalsIgnoreCase("DB2"))
			query.append(" (PT.FECHA_REGISTRO+3 MONTH) AS FECHA_VIGENCIA");
		else
			query.append(" DATE_FORMAT(ADDDATE(PT.FECHA_REGISTRO, INTERVAL 90 DAY),'%Y-%m-%d') AS FECHA_VIGENCIA");
		query.append(" ,SUM(COSTO*CANTIDAD) AS TOTAL");
		query.append(" FROM "+schema+"DETALLE_PLAN_TRATAMIENTO DPT");
		query.append(" INNER JOIN "+schema+"SERVICIO SE ON SE.SERVICIO_ID=DPT.SERVICIO_ID");
		query.append(" INNER JOIN "+schema+"PLAN_TRATAMIENTO PT ON PT.PLANTRA_CODIGO=DPT.PLANTRA_CODIGO");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA_DETALLE HCD ON HCD.FILEHC=PT.FILEHC ");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA HC ON HC.NROHC=HCD.NROHC ");
		query.append(" INNER JOIN "+schema+"ESPECIALIDAD ES ON PT.ESPECIALIDAD_ORIGEN=ES.ESPECIALIDAD_ID"); 
		query.append(" INNER JOIN "+schema+"SEDE SD ON ES.SEDE_ID=SD.SEDE_ID ");
		query.append(" INNER JOIN "+schema+"V_PACIENTE PAC ON PAC.PACIENTE_ID=HC.PACIENTE_ID");
		return query;
	}
	public static StringBuffer devuelveListadoPresupuestosGroup(){	
		StringBuffer 	query 		= new StringBuffer();
		query.append(" GROUP BY PT.PLANTRA_CODIGO,PT.FILEHC,PT.FECHA_REGISTRO,NOMBRE_COMPLETO,SD.NOMBRE,ES.NOMBRE ");
		return query;
	}
	public static StringBuffer devuelveListadoPlanTratamiento(){	
		StringBuffer 	query 		= new StringBuffer();
		query.append(" SELECT PLANTRA_CODIGO,A.FILEHC,SD.NOMBRE AS SEDE,ES.NOMBRE AS ESPECIALIDAD,");
		query.append(" ST.NOMBRE AS ESTADO,ME.NOMBRE_COMPLETO AS MEDICO,AL.NOMBRE_COMPLETO AS OPERADOR,FECHA_REGISTRO,PAC.NOMBRE_COMPLETO AS PACIENTE"); 
		query.append(" FROM "+schema+"PLAN_TRATAMIENTO A INNER JOIN "+schema+"ESPECIALIDAD ES");
		query.append(" ON A.ESPECIALIDAD_ORIGEN=ES.ESPECIALIDAD_ID");
		query.append(" INNER JOIN "+schema+"SEDE SD ON ES.SEDE_ID=SD.SEDE_ID");
		query.append(" INNER JOIN "+schema+"V_ALUMNO AL ON AL.CODIGO_ALUMNO=A.ALUMNO_INICIAL");
		query.append(" INNER JOIN "+schema+"V_MEDICO ME ON ME.CODIGO_MEDDOC=A.MEDDOC_INICIAL");
		query.append(" INNER JOIN "+schema+"ESTADO ST ON ST.ESTADO_ID=A.ESTADO_ID");
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA_DETALLE HCD ON HCD.FILEHC=A.FILEHC");  
		query.append(" INNER JOIN "+schema+"HISTORIA_CLINICA HC ON HC.NROHC=HCD.NROHC");
		query.append(" INNER JOIN "+schema+"V_PACIENTE PAC ON PAC.PACIENTE_ID=HC.PACIENTE_ID");
		return query;
	}
	public static StringBuffer devuelvePacienteEspecifico(){	
		StringBuffer 	query 		= new StringBuffer();
		query.append(" SELECT PACIENTE_ID,NOMBRES,APEPATERNO,APEMATERNO,UB.NOMBRE AS DISTRITO,DNI,FECHANACIMIENTO, ");
		query.append(" TELEFONO_FIJO,TELEFONO_CELULAR,EC.NOMBRE AS ESTADOCIVIL,SX.NOMBRE AS SEXO,DIRECCION,G.NOMBRE AS GRADO,");
		if(connectionType.equalsIgnoreCase("DB2"))
			query.append(" (YEAR(CURRENT_TIMESTAMP) - YEAR(FECHANACIMIENTO)) AS EDAD"); 
		else
			query.append(" YEAR(DATE_SUB(NOW(), INTERVAL TO_DAYS(FECHANACIMIENTO) DAY)) AS EDAD"); 
		query.append(" FROM "+schema+"PACIENTE A");
		query.append(" INNER JOIN SEXO SX ON SX.COD_SEXO=A.COD_SEXO");
		query.append(" INNER JOIN UBIGEO UB ON UB.COD_UBIGEO=A.COD_UBIGEO ");
		query.append(" INNER JOIN ESTADO_CIVIL EC ON EC.COD_ESTADO_CIVIL=A.COD_ESTADO_CIVIL ");
		query.append(" INNER JOIN GRADO_INSTRUCCION G ON G.COD_GRADO=A.COD_GRADO ");
		query.append(" WHERE PACIENTE_ID=?");
		
				return query;
	}
}